//	VS#72: Smoke (causes halos)

// Generated by Microsoft (R) HLSL Shader Compiler 9.19.949.2111
//
// Parameters:
//
//   float4 CameraPosition;
//   float4 CameraRight;
//   float4 CameraUp;
//   float4 CameraWorldPosition;
//   float3 Eye;
//   float4 FogDistance;
//   float4 FogHeight;
//   float4x4 LocalToWorld;
//   float3 Origin;
//   float4 PSLightAmbientColor;
//   float4 PSLightColor[2];
//   int PSLightCount;
//   float4 PSLightDirection[2];
//   float PSLightMaxIntensity;
//   float4 PSLightPosition[2];
//   float PSLightShadingExponent;
//   float2 Scale;
//   float4 ScreenAlignment;
//   float4x4 ViewProjectionMatrix;
//
//
// Registers:
//
//   Name                   Reg   Size
//   ---------------------- ----- ----
//   PSLightCount           i0       1
//   LocalToWorld           c0       4
//   ViewProjectionMatrix   c4       4
//   PSLightPosition        c8       2
//   PSLightDirection       c10      2
//   PSLightColor           c12      2
//   CameraWorldPosition    c14      1
//   CameraRight            c15      1
//   CameraUp               c16      1
//   ScreenAlignment        c17      1
//   Scale                  c18      1
//   Origin                 c19      1
//   PSLightMaxIntensity    c20      1
//   PSLightShadingExponent c21      1
//   PSLightAmbientColor    c22      1
//   CameraPosition         c23      1
//   FogDistance            c24      1
//   FogHeight              c25      1
//   Eye                    c26      1
//

    vs_3_0
    def c27, 0.00999999978, 0.159154937, 0.5, 1.5
    def c28, 6.28318548, -3.14159274, 0, -1
    dcl_position v0
    dcl_normal v1
    dcl_tangent v2
    dcl_texcoord v3
    dcl_blendweight v4
    dcl_color v5
    dcl_texcoord1 v6
    dcl_texcoord2 v7
    dcl_texcoord3 v8
    dcl_position o0
    dcl_color o1
    dcl_texcoord o2
    dcl_texcoord1 o3
    dcl_texcoord5 o4
    dcl_texcoord6 o5
    mul r0, c1, v0.y
    mad r0, c0, v0.x, r0
    mad r0, c2, v0.z, r0
    mad r0, c3, v0.w, r0
    mul r1.xyz, c1, v1.y
    mad r1.xyz, c0, v1.x, r1
    mad r1.xyz, c2, v1.z, r1
    mad r1.xyz, c3, v1.w, r1
    add r2.xyz, -r0.zxyw, c14.zxyw
    dp3 r1.w, r2, r2
    max r1.w, r1.w, c27.x
    rsq r1.w, r1.w
    mul r2.xyz, r2, r1.w
    add r1.xyz, r0, -r1
    dp3 r1.w, r1, r1
    max r1.w, r1.w, c27.x
    rsq r1.w, r1.w
    mul r1.xyz, r1, r1.w
    mad r1.w, v4.x, c27.y, c27.z
    frc r1.w, r1.w
    mad r1.w, r1.w, c28.x, c28.y
    sincos r3.xy, r1.w
    mul r4, r3.y, c15
    mad r4, -r3.x, c16, r4
    mul r5, r3.x, c15
    mad r3, r3.y, c16, r5
    mul r5.xyz, r2, r1.yzxw
    mad r2.xyz, r2.zxyw, r1.zxyw, -r5
    dp3 r1.w, r2, r2
    max r1.w, r1.w, c27.x
    rsq r1.w, r1.w
    mul r2.xyz, r2, r1.w
    mov r1.xyz, -r1
    mov r5.w, c27.w
    slt r5.x, r5.w, c17.x
    mov r2.w, c28.z
    lrp r6, r5.x, r2, r4
    mov r1.w, c28.z
    lrp r2, r5.x, r1, r3
    add r1.xyz, r0, -c19
    mov r1.w, c28.w
    add r3.x, r1.w, c18.y
    mul r3.yz, c18.x, v2.xxyw
    add r4.xy, -c27.z, v8
    mul r3.yz, r3, r4.xxyw
    mad r4, r3.y, r6, r0
    mad r4, r3.z, r2, r4
    mad r1.xyz, r1, r3.x, r4
    add r3.xyz, -r0, r1
    nrm r4.xyz, r3
    mov r3.xyz, c22
    loop aL, i0
      add r5.xyz, -r0, c8[aL]
      dp3 r0.w, r5, r5
      rsq r0.w, r0.w
      add r7.xyz, -r1, c8[aL]
      mad r8.xyz, r5, -r0.w, -c10[aL]
      mul r8.xyz, r8, c10[aL].w
      mad r5.xyz, r5, r0.w, r8
      dp3 r0.w, r5, r4
      mad_sat r0.w, r0.w, c27.z, c27.z
      pow r2.w, r0.w, c21.x
      mul r0.w, r2.w, c20.x
      rcp r2.w, c8[aL].w
      mul r5.xyz, r7, r2.w
      dp3 r2.w, r5, r5
      add r2.w, -r2.w, -c28.w
      max r2.w, r2.w, c28.z
      mul r3.w, r2.w, r2.w
      mad r2.w, r2.w, -r2.w, -c28.w
      mad r2.w, c10[aL].w, r2.w, r3.w
      mul r0.w, r0.w, r2.w
      mul r5.xyz, r0.w, c12[aL]
      add r3.xyz, r3, r5
    endloop
    add r0.xyz, c28.w, v5
    mad r0.xyz, c22.w, r0, -r1.w
    mul o1.xyz, r3, r0
    mul r0, r1.y, c5
    mad r0, c4, r1.x, r0
    mad r0, c6, r1.z, r0
    mad r0, c7, r4.w, r0
    add r3.xyz, r1, -c26
    dp3 r1.w, r3, r3
    rsq r1.w, r1.w
    rcp r1.w, r1.w
    add r1.w, r1.w, -c24.x
    mul_sat r1.w, r1.w, c24.y
    pow r2.w, r1.w, c24.z
    mul r1.w, r2.w, c24.w
    add r2.w, r1.z, -c25.x
    mul_sat r2.w, r2.w, c25.y
    pow r3.x, r2.w, c25.z
    mul r2.w, r3.x, c25.w
    mul_sat r1.w, r1.w, r2.w
    add o5.w, -r1.w, -c28.w
    mad r1.xyz, r1, -c23.w, c23
    mul r3.xyz, r6.zxyw, r2.yzxw
    mad r3.xyz, r6.yzxw, r2.zxyw, -r3
    nrm r4.xyz, r3
    dp3 o5.x, r6, r1
    dp3 o5.y, r2, r1
    dp3 o5.z, r4, r1
    mov o0, r0
    mov o1.w, v5.w
    mov o2.xy, v3
    mov o2.zw, v6.xyxy
    mov o3.xy, v7
    mov o3.zw, v8.xyxy
    mov o4, r0

// approximately 130 instruction slots used
 